home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64-128Toolkit / MSD-DU10.ARC / MSD - PART 08 < prev    next >
Encoding:
Text File  |  2019-04-13  |  4.4 KB  |  79 lines

  1. ║CM:MSD - PART 08
  2. ║LM21:RM70:PP66:PG60
  3. ║P#15
  4. ║FT1:,,╨AGE <>
  5. ║AI-16
  6.        ╙╙╥┼     ╥E-ENTER DIRECTORY SEARCH
  7.  
  8. $├516           ╙ET ╘╥┴├╦ [$55] TO ─╔╥╘╥╦ [$╞┼6┬] AND ╙┼├╘╧╥ [$56] TO ─╔╥╙┼├ [$4├┼1].
  9. $├520           ╩╙╥ ╧╨╬╔╥─ [$─4─┼] TO OPEN A READ CHANNEL AND GET THE FIRST ONE OR TWO BLOCKS.
  10. $├523           ╠OAD .┴ WITH ╔╬─┼╪ [$4├┼4], THE LAST ENTRY WE WERE SEARCHING AND ╩╙╥ ╙┼╘╨╬╘ [$─533] TO SET THE ─╔╥╨╘╥ [$69/$6┴] TO POINT TO THIS ENTRY.
  11.  
  12.  
  13.  
  14.        ╙┼┴╥├╚   ├ONTINUE SEARCH OF ENTRIES
  15.  
  16. $├529           ╙ET ┼╬╘╞╬─ [$4├┬5] TO $╞╞ TO INDICATE ENTRY IS NOT FOUND.
  17. $├52┼           ╔F ╞╔╠├╬╘ [$4├┼5] < 0 THEN THERE ARE NO ENTRIES LEFT IN THIS BLOCK SO BRANCH TO ╙╥40 TO OBTAIN ANOTHER BLOCK.
  18. $├533           ╙ET .┴ TO $20 (THE SIZE OF A DIRECTORY ENTRY), ╩╙╥ ╔╬├╨╬╘ [$─281] TO INCREMENT THE ACTIVE BUFFER POINTER, AND JUMP TO ╙╥20 TO SCAN THIS ENTRY.
  19. $├53┬  ╙╥40     ╩╙╥ ╬╪╘┬╒╞ [$─4┬7] TO GET THE NEXT DIRECTORY BLOCK AND JUMP TO ╙╥10 TO START PROCESSING IT.
  20. $├541  ╙╥50     ╓ALID ENTRY WAS FOUND.  ├OPY LOW ORDER BYTE OF ─╔╥┬╒╞ [$69], THE OFFSET OF THE VALID ENTRY, INTO ╔╬─┼╪ [$4├┼4].
  21. $├546           ╩╙╥ ├╒╥┬╠╦ [$──┼6] TO OBTAIN THE SECTOR # FOR THIS BLOCK, COPY ╙┼├╘╧╥ [$56] TO ─╔╥╙┼├ [$4├┼1], AND RETURN WITH A VALID ENTRY.
  22.  
  23.  
  24.  
  25.        ┴╒╘╧╔    ├HECK FOR DISK AND INITIALIZE DRIVE IF NECESSARY
  26.  
  27. $├54╞           ╔F ┴╒╘╧╞╟ [$4├34] IS NOT ZERO, AUTO-INITIALIZATION IS DISABLED SO BRANCH TO ┴╒╘╧2.
  28. $├554           ╠OAD .╪ WITH ─╥╓╬╒═ [$54] AND SEE IF THE DISKETTE HAS BEEN SWAPPED BY DOING AN ╠╙╥ ON THE WRITE PROTECT CHANGE FLAG ╫╨╙╫,╪ [$4├2─,╪].  ╔F .├ IS CLEAR THEN THERE HAS BEEN NO CHANGE SO BRANCH TO ┴╒╘╧2.
  29. $├55┬           ╙ET ╩╧┬╥╘╬ [$4├┼8] TO $╞╞.
  30. $├560           ╩╙╥ ╔╘╥╔┴╠ [$─0┼0] TO INITIALIZE THE DRIVE.
  31. $├563           ╙ET .┘ TO $╞╞ (DRIVE STATUS) AND CHECK THE JOB CODE RETURNED BY ╔╘╥╔┴╠.  ╔F IT IS $02 (NO HEADER), $03 (NO ╙┘╬├), OR $0╞ (NO DRIVE) THEN BRANCH TO ┴╒╘╧1 TO SET THE DRIVE STATUS.
  32. $├571           ├LEAR .┘ TO INDICATE THE DRIVE IS ALL RIGHT.
  33. $├573  ┴╒╘╧1    ╠OAD .╪ WITH ─╥╓╬╒═ [$54] AND COPY THE VALUE IN .┘ (DRIVE STATUS) TO ╬╧─╥╓,╪ [$4├86,╪].
  34. $├579           ╔F THE STATUS IS BAD THEN BRANCH TO ┴╒╘╧2.
  35. $├57┬           ╩╙╥ ╔╬╔╘─╥ [$─0╞9] TO INITIALIZE THE DRIVE.
  36. $├57┼  ┴╒╘╧2    ╠OAD .╪ WITH ─╥╓╬╒═ [$54], OBTAIN THE DRIVE STATUS FROM ╬╧─╥╓,╪ [$4├86], AND RETURN.
  37. ║FP
  38.        ╘╥╬┴═┼   ╘RANSFER FILE NAME FROM COMMAND AREA TO A BUFFER
  39.  
  40. $├584           ╨USH LENGTH OF FILE NAME ONTO THE STACK.
  41. $├585           ╩╙╥ ╞╬─╠═╘ [$├5┬├] TO FIND THE END OF THE STRING.
  42. $├588           ╩╙╥ ╘╥├═┬╞ [$├59┼] TO COPY THE STRING.
  43. $├58┬           ╥ESTORE FILE NAME LENGTH FROM THE STACK.
  44. $├58├           ├ALCULATE AMOUNT OF PADDING BY SUBTRACTING THE STRING LENGTH, ╙╘╥╙╔┌ [$4├┴─], FROM .┴ (FILE NAME LENGTH) AND TRANSFERRING TO .╪.  ╔F THIS VALUE IS 0 OR LESS THEN BRANCH TO ╘╬20 TO EXIT.
  45. $├595           ╙ET THE PAD CHARACTER TO $┴0 AND FILL IN THE DATA BUFFER (─╔╥┬╒╞),┘ [($69),┘] FOR THE LENGTH IN .╪.
  46. $├59─  ╘╬20     ╥ETURN.
  47.  
  48.  
  49.  
  50.        ╘╥├═┬╞   ╘RANSFER FROM COMMAND TO DATA BUFFER
  51.  
  52. $├59┼           ╙ET ─╔╥┬╒╞ [$69-$6┴] TO POINT TO THE DATA BUFFER IN WHICH TO STORE THE STRING BY USING .┘ AS AN INDEX INTO THE ┬╒╞╘┴┬ [$7┴...] POINTER TABLE.
  53. $├5┴┬           ╙ET DATA BUFFER INDEX IN .┘ TO ZERO.
  54. $├5┴─  ╘╥10     ├OPY BYTE FROM ├═─┬╒╞,╪ [$4┼00,╪] TO THE DATA AREA (─╔╥┬╒╞),┘ [($69),┘].
  55. $├5┬2           ╔NCREMENT .┘ AND IF ZERO THEN BRANCH TO ╘╥20 TO STOP.
  56. $├5┬6           ╔NCREMENT .╪ AND IF .╪ < ╠╔═╔╘ [$4┼2╞] THEN LOOP BACK TO ╘╥10 TO COPY ANOTHER CHARACTER.
  57. $├5┬┬  ╘╥20     ╥ETURN - STRING COPIED.
  58.  
  59.  
  60.  
  61.        ╞╬─╠═╘   ╞IND END OF FILE NAME IN ├═─┬╒╞
  62.  
  63. $├5┬├           ╙ET ╙╘╥╙╔┌ [$4├┴─] TO ZERO.
  64. $├5├1           ╨USH .╪ (STARTING POSITION OF FILE NAME) ONTO THE STACK.
  65. $├5├3  ╞╠05     ╔F ├═─┬╒╞,╪ [$4┼00,╪] = $2├ (,) OR $3─ (=) THEN BRANCH TO ╞╠10 SINCE THE END OF THE FILE NAME HAS BEEN DETECTED.
  66. $├5├┼           ╔NCREMENT ╙╘╥╙╔┌ [$4├┴─] AND .╪ TO ADVANCE TO THE NEXT CHARACTER.
  67. $├5─2           ╔F ╙╘╥╙╔┌ [$4├┴─] >= $0╞ THEN BRANCH TO ╞╠10 TO EXIT SINCE FILE NAMES HAVE A MAX LENGTH OF 16.
  68. $├5─9           ╔F .╪ < ├═─╙╔┌ [$4╞] THEN BRANCH BACK TO ╞╠05 TO CONTINUE LOOKING FOR THE END OF THE FILE NAME.
  69. $├5──  ╞╠10     ╙ET ╠╔═╔╘ [$4┼2╞] TO .╪, THE ENDING OFFSET OF THE FILE NAME.
  70. $├5┼0           ╥ESTORE .╪ FROM THE STACK AND RETURN.
  71.  
  72.  
  73.  
  74.        ╟┼╘╬┴═   ╟ET FILE ENTRY FROM DIRECTORY
  75.  
  76. $├5┼3           ╙AVE ╙┴ [$58] AND ╠╔╬─╪ [$57] ON THE STACK.
  77. $├5┼9           ╩╙╥ ╟╬╙╒┬ [$├5╞3] TO GET A DIRECTORY ENTRY BY USING A SECONDARY ADDRESS OF $11 (THE INTERNAL READ CHANNEL).
  78. $├5┼├           ╥ESTORE ╙┴ [$58] AND ╠╔╬─╪ [$57] FROM THE STACK AND RETURN.
  79.